Some data centers run several large applications, with each application running on hundreds or even thousands of computing devices. These large applications can be three tier business applications, HPC applications or large applications such as Bing, Google, Hotmail, Facebook, Yahoo, Amazon and the like. These can be cloud based. Other data centers run more of a one application to one server model.
Data centers have limited resources and as such, allocation of power and computing resources are of key concern for data centers. Each application may be budgeted a peak amount of power/resources and each application may, at various times, consume power and computing resources at widely varying rates. Accordingly, the peak amounts of power budgeted for all applications combined at a single data center may be greater than the total power available to the data center at a given time. As such, it is necessary to budget power consumption to resolve conflicts between total available power and multiple applications requiring power. In other words, power, both peak and average over time must be budgeted. In order to understand how power is budgeted, it is important to understand the architecture of applications in data centers.
Today's larger applications running in data centers tend to operate on a plurality of computing systems, each system containing multiple virtual machines, each virtual machine running a portion of the application. This structure has multiple benefits. For example, errors resulting from server failure can be minimized, i.e. failure of a server might mean a small portion of multiple applications would be affected instead of a large portion of a single application. In addition, computing devices have resources proportioned typically without prior knowledge of the application that will be running on it. As such, if a single application were running on a computing device, some of the resources may not be entirely utilized. Accordingly, applications can be split across multiple computing devices in ways that allow for greater utilization of the total resources of the computing system. Further, there may be requirements for a minimum number of servers running an application such that updates to the application may be made seamlessly to prevent interruption of services.
Each computing device running a portion of an application requires power to operate. Virtual machines may have a relationship between the amount of power provided to the virtual machine and the performance of the virtual machine. In other words, more power can mean more processing capability and less power can mean less processing capability. More and more, data centers are becoming large, power intensive entities. For a variety of reasons, the power available may be limited at a data center. For example, during daytime operation, the total power available to the data center may depend on the output of nearby power stations and the consumption of nearby city centers and the like. As such, there is a limit to the total power consumption and accordingly, the amount of ‘processing’ that may be performed at a data center.
Applications do not run in steady state. In other words if there is an increase in number of people logging onto a particular application, the application may need to adapt by increasing the number of virtual machines running the application, which is linked to an increase in the power consumption by the application.
Conflicts in the total power available and the requirements of applications based on utilization, power failures and the like may occur. Data centers have dealt with these conflicts using brute force methods. One such method is known as power capping across the entire server. In server power capping, the power allotted for the server is reduced without regard to priority of the application or application configuration. Such a method resolves the conflict and reduces the power to all applications on the server. Another method could be capping across all servers in the data center. In such an example, the power available to all applications without regard to application architecture and the priority of the particular application. These known methods use hardware/firmware only to reduce the power consumption.